
#include "Engine/common.h"
#include "DNF定义.h"
#include "DNF对象定义.h"

void DNF角色对象::重置属性()
{
	for (int i=角色物理攻击力;i<=角色旧_持续伤害;i++)
		角色属性[i]=0.0f;
	角色属性[角色技能伤害]=1.0f;

	增伤倍率=1.0f;
	物攻百分比提升率=1.0f;
	魔攻百分比提升率=1.0f;
	独立百分比提升率=1.0f;
	基础精通倍率=1.0f;
	装备技能范围=0.0f;
	MP额外消耗量=0.0f;
	TP技能增加标记=FALSE;
	酷寒一击标记=FALSE;
	傀儡一击标记=FALSE;
	魔女上衣特殊词条标记=FALSE;

	装备攻强成长倍率=1.0f;
	装备加成开关=FALSE;
	面板冷却统计开关=TRUE;
	附魔倍率=1.0f;
	攻速鞋部位标记=L"其他部位";
	攻速鞋适用攻速=0.0f;
	装备提供的睡眠抗性=0.0f;

	动态力量=0;
	动态智力=0;

	for (int i=0;i<套装总数;i++)
		套装数量记录[i]=0;

	重置异常();

	重置条件信息();
}

void DNF角色对象::重置异常()
{
	//计算时没有是否处于异常状态的概念，完全以触发频率判定
	//为了计算min简单，以999作为初始值，等于999的值在计算时忽略
	//当用户设置怪物处于某种异常时，等价于该异常0间隔触发
	//但频率只是理论频率，适用值还会受到破韧和装备的影响
	for (int i=0;i<异常状态总数;i++)
		异常属性[i].重置();
	异常属性[出血].更新频率(出血触发频率间隔);
	异常属性[中毒].更新频率(中毒触发频率间隔);
	异常属性[灼伤].更新频率(灼伤触发频率间隔);
	异常属性[感电].更新频率(感电触发频率间隔);
	for (int i=冰冻;i<异常状态总数;i++)
		异常属性[i].更新频率(控制型异常触发频率间隔);
	for (int i=0;i<异常状态总数;i++)
	{
		if (敌人异常状态标记[i])
			异常属性[i].更新频率(0);
	}
	破冰增伤增加量=0;
}

void DNF角色对象::物攻增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色物理攻击力]+=v;
}

void DNF角色对象::魔攻增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色魔法攻击力]+=v;
}

void DNF角色对象::独立增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色独立攻击力]+=v;
}

void DNF角色对象::三攻增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色物理攻击力]+=v;
	角色属性[角色魔法攻击力]+=v;
	角色属性[角色独立攻击力]+=v;
}

void DNF角色对象::力量增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色力量]+=v;
}

void DNF角色对象::智力增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色智力]+=v;
}

void DNF角色对象::力智增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色力量]+=v;
	角色属性[角色智力]+=v;
}

void DNF角色对象::四维增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色力量]+=v;
	角色属性[角色智力]+=v;
	角色属性[角色体力]+=v;
	角色属性[角色精神]+=v;
}

void DNF角色对象::单四维增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;
	if (当前职业对象->攻击类型==物理攻击类型)
		角色属性[角色力量]+=v;
	else if (当前职业对象->攻击类型==魔法攻击类型)
		角色属性[角色智力]+=v;
}


void DNF角色对象::物理暴击增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色物理暴击率]+=v;
}

void DNF角色对象::魔法暴击增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色魔法暴击率]+=v;
}

void DNF角色对象::暴击增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色物理暴击率]+=v;
	角色属性[角色魔法暴击率]+=v;
}

void DNF角色对象::攻速增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	//这里没有做攻速200上限的判断
	//游戏里有这样一种情况需要说明，攻速从武器开始计算，上限200
	//攻速鞋受上限影响，没法吃满200攻速（没有任何影响）
	v*=附魔倍率;
	角色属性[角色攻击速度]+=v;
	if (攻速鞋部位检查())
		攻速鞋适用攻速+=v;
}

void DNF角色对象::移速增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色移动速度]+=v;
}

void DNF角色对象::施放加速(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色施放速度]+=v;
}

void DNF角色对象::三速增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色攻击速度]+=v;
	角色属性[角色施放速度]+=v;
	角色属性[角色移动速度]+=v;
	if (攻速鞋部位检查())
		攻速鞋适用攻速+=v;
}

void DNF角色对象::火强增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色火属性强化]+=v;
}

void DNF角色对象::冰强增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色冰属性强化]+=v;
}

void DNF角色对象::光强增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色光属性强化]+=v;
}

void DNF角色对象::暗强增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色暗属性强化]+=v;
}

void DNF角色对象::全属强增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;
	角色属性[角色火属性强化]+=v;
	角色属性[角色冰属性强化]+=v;
	角色属性[角色光属性强化]+=v;
	角色属性[角色暗属性强化]+=v;
}

void DNF角色对象::火抗增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	//v*=附魔倍率;
	角色属性[角色火属性抗性]+=v;
}

void DNF角色对象::冰抗增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	//v*=附魔倍率;
	角色属性[角色冰属性抗性]+=v;
}

void DNF角色对象::光抗增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	//v*=附魔倍率;
	角色属性[角色光属性抗性]+=v;
}

void DNF角色对象::暗抗增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	//v*=附魔倍率;
	角色属性[角色暗属性抗性]+=v;
}

void DNF角色对象::全属抗增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	//v*=附魔倍率;
	角色属性[角色火属性抗性]+=v;
	角色属性[角色冰属性抗性]+=v;
	角色属性[角色光属性抗性]+=v;
	角色属性[角色暗属性抗性]+=v;
}

void DNF角色对象::异抗增加(DNF异常状态类型 类型,float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	//v*=附魔倍率;
	角色属性[角色出血抗性+(int)类型]+=v;
	if (装备加成开关 && 类型==睡眠)
		装备提供的睡眠抗性+=v;
}

void DNF角色对象::全异抗增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	//v*=附魔倍率;
	角色属性[角色出血抗性]+=v;
	角色属性[角色中毒抗性]+=v;
	角色属性[角色灼伤抗性]+=v;
	角色属性[角色感电抗性]+=v;
	角色属性[角色冰冻抗性]+=v;
	角色属性[角色减速抗性]+=v;
	角色属性[角色眩晕抗性]+=v;
	角色属性[角色诅咒抗性]+=v;
	角色属性[角色失明抗性]+=v;
	角色属性[角色石化抗性]+=v;
	角色属性[角色睡眠抗性]+=v;
	角色属性[角色混乱抗性]+=v;
	角色属性[角色束缚抗性]+=v;
	if (装备加成开关)
		装备提供的睡眠抗性+=v;
}

void DNF角色对象::技能伤害提升(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	v*=附魔倍率;	//加算加倍
	角色属性[角色技能伤害]*=1.0+v;
}

void DNF角色对象::攻击强化增加(float v,BOOL 允许成长)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	if (允许成长)
		v*=装备攻强成长倍率;
	角色属性[角色攻击强化]+=v;
}

void DNF角色对象::攻击强化增幅增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	角色属性[角色攻击强化增幅]+=v;
}

void DNF角色对象::三攻百分比增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	角色属性[角色旧_三攻增加]+=v;
}

void DNF角色对象::力智百分比增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	角色属性[角色旧_力智增加]+=v;
}

void DNF角色对象::伤害提升(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	增伤倍率*=1.0f+v;
}

void DNF角色对象::三攻百分比提升(float 物攻提升,float 魔攻提升,float 独立提升)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	物攻百分比提升率*=1.0f+物攻提升;
	魔攻百分比提升率*=1.0f+魔攻提升;
	独立百分比提升率*=1.0f+独立提升;
}

void DNF角色对象::基础精通伤害提升(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	基础精通倍率*=1.0f+v;
}

void DNF角色对象::技能范围增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	if (装备加成开关)
		装备技能范围+=v;
}

void DNF角色对象::MP消耗量增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	MP额外消耗量+=v;
}

void DNF角色对象::设置TP技能增加标记()
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	TP技能增加标记=TRUE;
}

void DNF角色对象::设置酷寒一击标记()
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	酷寒一击标记=TRUE;
}

void DNF角色对象::设置傀儡一击标记()
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	傀儡一击标记=TRUE;
}

void DNF角色对象::灼伤破冰伤害增加(float v)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	破冰增伤增加量+=v;
}

void DNF角色对象::异常触发记录::重置()
{
	伤害占比=0;
	触发频率=999;
	伤害增加量=0;
	持续时间增加量=0;
	持续时间百分比增加量=0;
}

void DNF角色对象::异常触发记录::更新频率(float 间隔时间)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	//这里只需要记录最高频率，不考虑破韧与否
	触发频率=fmin(触发频率,间隔时间);
}

void DNF角色对象::异常触发记录::伤害增加(float 增加量)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	伤害增加量+=增加量;
}

void DNF角色对象::异常触发记录::持续时间增加(float 增加量)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	持续时间增加量+=增加量;
}

void DNF角色对象::异常触发记录::持续时间百分比增加(float 增加量)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	持续时间百分比增加量+=增加量;
}

void DNF角色对象::异常触发记录::占比增加(float 增加量)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	伤害占比+=增加量;
}

void DNF角色对象::异常条件技能伤害提升(DNF异常状态类型 类型,float 提升量)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;

	//对于"攻击XX异常状态的敌人时，技能伤害+X"词条，可能会因为异常频率太低导致无法触发
	//理论上只要不是0间隔或全程覆盖，都会有损失，应该计算保有率,然而实际没法算
	//此算法仅供参考
	//float 异常基础时间[异常状态总数]={3, 5, 5, 10, 5, 3, 3, 6.9, 5, 10, 10, 5, 5};	//诅咒时间取平均
	//float 持续时间=异常基础时间[类型]*(1.0+异常属性[类型].持续时间百分比增加量)+异常属性[类型].持续时间增加量;
	//float 保有率=持续时间/异常基础时间[类型];
	//保有率=min(保有率,1);
	//异常条件技能伤害*=1.0f+(提升量*保有率);
	//虽然异常都有基础的持续时间,但很多装备效果都是进入XX状态X秒,和基础值不一样
	//累积总时间也不可行,各个来源触发的CD不一样
	//只有持续时间大于冷却时间的情况才能确定覆盖时间为100%,但是很多装备要检查的是触发频率
	//由于增伤状态本身持续30s,基本可以覆盖,就粗略的将存不存在某种异常当做怪物是否处于某种异常
	//基于上述理由,异常只按冷却时间统计触发频率,忽略持续时间(不是[持续时间增加]词条)

	//频率间隔为0时，视为强制破韧，100%触发（来源可能是设置或装备）
	if (异常属性[类型].触发频率==0)
		角色属性[角色技能伤害]*=1+提升量;
	//怪物不存在此类异常，角色也无法赋予此类异常
	else if (fequal(异常属性[类型].触发频率,999) && fequal(异常属性[类型].伤害占比,0))
	{
		添加条件信息(FALSE,异常状态名称文本[类型]);
		return ;
	}	
	//非破韧状态下控制型异常不生效
	else if (类型>=伤害型异常总数 && 适用控制型异常==FALSE)
	{
		添加条件信息(FALSE,异常状态名称文本[类型]);
		return ;
	}
	//伤害型异常无视破韧，或控制型异常+破韧
	else
		角色属性[角色技能伤害]*=1+提升量;
	添加条件信息(TRUE,L"条件技伤已触发");
}

void DNF角色对象::异常条件攻击强化增加(DNF异常状态类型 类型,float 增加量,int 叠加上限)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	int 对象总数=0;
	//仅伤害型异常，只要角色带有伤害转化，或能够触发就视为敌人有此状态，不计算覆盖率
	if (CompareFloat(异常属性[类型].伤害占比,0,'>') || CompareFloat(异常属性[类型].触发频率,999,'<'))
	{
		对象总数+=怪物数量;
		if (部位穿戴装备检查(上衣,L"混乱核心胸甲"))
			对象总数+=5;
	}
	//此词条只要求对象数，自身处于异常状态时也计入
	if (自身异常状态标记[类型])
		对象总数++;
	int 次数=min(对象总数,叠加上限);
	角色属性[角色攻击强化]+=增加量*次数;
	if (次数<叠加上限)
		添加条件信息(FALSE,异常状态名称文本[类型]);
	else
		添加条件信息(TRUE,L"条件攻强完全触发");
}

void DNF角色对象::设置自身异常状态(DNF异常状态类型 类型)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	自身异常状态标记[类型]=TRUE;
}

void DNF角色对象::设置HP范围(float 范围限制)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	HP范围=fmin(HP范围,范围限制);
}

void DNF角色对象::设置魔女上衣特殊词条标记()
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	魔女上衣特殊词条标记=TRUE;
}

void DNF角色对象::标记动态力智(int 力量增加值,int 智力增加值)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改伤害类)==0)
		return ;
	动态力量+=力量增加值;
	动态智力+=智力增加值;
}

void DNF角色对象::套装部件数量增加(int 套装索引,int 数量)
{
	if ((当前角色对象->属性控制状态&属性控制_仅修改条件类)==0)
		return ;
	if (套装索引!=-1)
		当前角色对象->套装数量记录[套装索引]+=数量;
}

float DNF角色对象::获取最高属强()
{
	return fmax(fmax(角色属性[角色火属性强化],角色属性[角色冰属性强化]),
		fmax(角色属性[角色光属性强化],角色属性[角色暗属性强化]));
}

float DNF角色对象::获取最高异常状态抗性()
{
	float v=角色属性[角色出血抗性];
	v=fmax(v,角色属性[角色中毒抗性]);
	v=fmax(v,角色属性[角色灼伤抗性]);
	v=fmax(v,角色属性[角色感电抗性]);
	v=fmax(v,角色属性[角色冰冻抗性]);
	v=fmax(v,角色属性[角色减速抗性]);
	v=fmax(v,角色属性[角色眩晕抗性]);
	v=fmax(v,角色属性[角色诅咒抗性]);
	v=fmax(v,角色属性[角色失明抗性]);
	v=fmax(v,角色属性[角色石化抗性]);
	v=fmax(v,角色属性[角色睡眠抗性]);
	v=fmax(v,角色属性[角色混乱抗性]);
	v=fmax(v,角色属性[角色束缚抗性]);
	return v;
}

float DNF角色对象::获取最高伤害型异常增伤()
{
	return fmax(fmax(异常属性[出血].伤害增加量,异常属性[感电].伤害增加量),
		fmax(异常属性[灼伤].伤害增加量,异常属性[中毒].伤害增加量));
}

int DNF角色对象::获取自身异常状态数()
{
	int Num=0;
	for (int i=0;i<异常状态总数;i++)
	{
		if (自身异常状态标记[i])
			Num++;
	}
	return Num;
}

float DNF角色对象::计算贴膜升级技伤(float 原技伤,int 部位,DNF角色对象::贴膜细分类型 类型)
{
	if (类型==四小龙和回廊贴膜)
	{
		float 总技伤=原技伤;
		if (当前角色对象->贴膜升级[部位-手镯贴膜])
			总技伤+=3.0f;
		return 总技伤;
	}
	else if (类型==新110级贴膜)
	{
		float 总技伤=原技伤;
		if (当前角色对象->贴膜升级[部位-手镯贴膜])
			总技伤+=1.5f;
		return 总技伤;
	}
	return 原技伤;
}

void DNF角色对象::应用石化打击属性()
{
	if (傀儡一击标记)
		技能伤害提升(PC(5));
	else
		异常条件技能伤害提升(石化,PC(15));
}

void DNF角色对象::应用冰冻打击属性()
{
	//实测是直接的5%技攻，加在面板上
	if (酷寒一击标记)
		技能伤害提升(PC(5));
	else
		异常条件技能伤害提升(冰冻,PC(15));
}

BOOL DNF角色对象::穿戴装备检查(WCHAR* 装备名称)
{
	if (装备名称==NULL)
		return FALSE;
	for (int i=0;i<全部装备部位总数;i++)
	{
		if (i==武器 || i==武器贴膜)
			continue;
		WCHAR* 名称=NULL;
		if (角色装备[i]->空装备==FALSE)
			名称=DNF装备名称[角色装备[i]->装备Id];
		if (名称!=NULL && wcscmp(名称,装备名称)==0)
			return TRUE;
	}
	return FALSE;
}

BOOL DNF角色对象::部位穿戴装备检查(int 部位,WCHAR* 装备名称)
{
	if (装备名称==NULL)
		return FALSE;
	if (部位==武器 || 部位==武器贴膜)
		return FALSE;
	WCHAR* 名称=NULL;
	if (角色装备[部位]->空装备==FALSE)
		名称=DNF装备名称[角色装备[部位]->装备Id];
	if (名称!=NULL && wcscmp(名称,装备名称)==0)
		return TRUE;
	return FALSE;
}

BOOL DNF角色对象::穿戴CP武器检查()
{
	//切换职业时，武器自动切换至职业大系
	//CP武器可能类型不同，但职业一定是契合的
	//默认正常使用，不需要额外做判断
	DNF武器对象* 武器对象=武器动态对象;
	if (武器对象->空装备)
		return FALSE;
	if (武器对象->武器系列==胜负之役武器系列 || 武器对象->武器系列==失衡_崩离边界武器系列)
		return TRUE;
	return FALSE;
}

BOOL DNF角色对象::部位有装备(DNF装备部位 部位)
{
	if (部位==武器)
		return (武器动态对象->空装备==FALSE);
	else if (部位==武器贴膜)
		return 使用武器贴膜;
	else 
		return(角色装备[部位]->空装备==FALSE);
}

//其中"装备和贴膜"不包含武器和武器贴膜，会设为"武器"和"武器贴膜"
WCHAR* 攻速鞋部位名称[8]={L"装备和贴膜",L"装扮",L"徽章",L"勋章",L"辟邪玉",L"快捷栏装备",L"宠物装备",L"名称装饰卡"};

BOOL DNF角色对象::攻速鞋部位检查()
{
	for (int i=0;i<8;i++)
		if (wstreql(攻速鞋部位标记,攻速鞋部位名称[i]))
			return TRUE;
	return FALSE;
}

void DNF角色对象::初始化()
{
	//设置项由设置模块逐一填写，不需要初始化
	武器动态对象=new DNF武器对象;
	装扮动态对象=new DNF装扮对象;
	辟邪玉动态对象=new DNF辟邪玉对象;
	条件记录=new WCHAR[2048];
}

void DNF角色对象::反初始化()
{
	delete 武器动态对象;
	delete 装扮动态对象;
	delete 辟邪玉动态对象;
	delete[] 条件记录;
}

void DNF角色对象::初始化套装对象(int 索引,DNF装备对象* 对象)
{
	套装对象[索引]=对象;
}